Virtualization is a computing technique of executing one or more processes such as an application or an operating system within an environment that emulates another environment. For example, virtualization can be realized by executing an operating system within a virtual machine that emulates a computing system. A virtual machine is an environment defined by one or more software modules that—when hosted at computing system—emulates a physical machine such as a computing system. The emulated computing system can be said to be “virtualized.” Virtualization is often used in cloud or utility computing environments to simplify system administration, improve isolation, and improve hardware utilization.
Typically, a virtual machine (or a group of virtual machines) are managed or supervised by a hypervisor. A hypervisor is an environment defined by one or more software modules that manages, controls, or multiplexes access to the hardware resources of a computing system by virtual machines hosted at that computing system. Additionally, some hypervisors manage the lifecycle (e.g., boot, execution, suspension, and termination) of virtual machines. Because the hypervisor operates between a virtual machine and the hardware resources (e.g., processors, memory, data stores, network interfaces, etc.), the hypervisor can observe data moving between those hardware resources and the virtual machine.